use std::rc::Weak;

use super::solution::Solution;
use super::solution::ListNode;

// Definition for singly-linked list.
// #[derive(PartialEq, Eq, Clone, Debug)]
// pub struct ListNode {
//   pub val: i32,
//   pub next: Option<Box<ListNode>>
// }
// 
// impl ListNode {
//   #[inline]
//   fn new(val: i32) -> Self {
//     ListNode {
//       next: None,
//       val
//     }
//   }
// }
// impl Solution {
//     pub fn reverse_between(head: Option<Box<ListNode>>, left: i32, right: i32) -> Option<Box<ListNode>> {
        
//     }
//     fn forward(head:Option<Box<ListNode>>,left: i32,right: i32,ind :i32 )->Option<Box<ListNode>>{
//         if head.is_none(){
//             return head;
//         }
//         let mut head=head.unwrap();
//         if ind ==left{
//             let  p =Self::forward(head.next, left, right, ind+1);
//             head.next=p;
//         }else{
//             let  p =Self::reverse(head.next, left, right, ind+1);
//             head.next=p.0;
//             p.1.upgrade().unwrap().unwrap().next=p.2;
//         }
//         return Some(head);
//     }
//     fn reverse(mut head:Option<Box<ListNode>>,left: i32,right: i32 ,ind :i32)->(Option<Box<ListNode>>,Weak<Option<Box<ListNode>>>,Option<Box<ListNode>>){
//         if head.is_none(){
//             return head;
//         }
//         let mut head=head.unwrap();
//         if ind <= right{
//             let p=Self::reverse(head.next, left, right, ind+1);
//             if let Some(p)=p{
//                 p.
//             }
//         }else{
//             return head;
//         }
//     }
// }